"""
题目：你有n个数，可以将它们两两匹配(即将两数首尾相连)，每个数只能使用一次，问匹配后最多有多少个3的倍数（没有进行匹配的数不算）？
解题思路：
1. 一个数模 3 的余数可以是 0、1 或 2。
    ab 是 3 的倍数当且仅当 (a mod 3 + b mod 3) mod 3 == 0。
2. 余数为 0 的数之间配对：
    两个余数为 0 的数配对：(0 + 0) mod 3 = 0，是 3 的倍数。
    可以形成 count[0] // 2 对。
3. 余数为 1 和余数为 2 的数配对：
    (1 + 2) mod 3 = 0，是 3 的倍数。
    可以形成 min(count[1], count[2]) 对。
"""


def main():
    n = int(input())
    # 输入数据并统计该数对3的余数
    count = [0, 0, 0]
    for i in range(n):
        num = int(input())
        count[num % 3] += 1

    print(count[0] // 2 + min(count[1], count[2]))


if __name__ == '__main__':
    main()
